package javaCode.chapter09.single_;

/**
 * 演示懒汉式的单例模式
 */
public class SingleTon02 {
    public static void main(String[] args) {

        Cat instance = Cat.getInstance();
        System.out.println(instance);

    }
}

//希望在程序运行过程中，只能创建一个Cat对象
//使用单例模式
class Cat{
    private String name;

    private static Cat cat; //默认是null

    //步骤
    //1、将构造器私有化
    //2、定义一个static静态属性对象
    //3、提供一个public的static 方法，可以返回任意一个Cat对象
    //4、只要当用户调用 getInstance时，才返回cat对象，后面再次使用，会返回上一次创建的cat对象
    //   从而保证了单例
    private Cat(String name) {
        this.name = name;
    }

    public static Cat getInstance(){

        if (cat == null) { //如果还没有创建对象
            cat = new Cat("花花");
        }
        return cat;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}